package com.sylar.tool.test.datasource;

import com.baomidou.dynamic.datasource.creator.DatasourceInitProperties;
import com.baomidou.dynamic.datasource.creator.atomikos.AtomikosConfig;
import com.baomidou.dynamic.datasource.creator.beecp.BeeCpConfig;
import com.baomidou.dynamic.datasource.creator.dbcp.Dbcp2Config;
import com.baomidou.dynamic.datasource.creator.druid.DruidConfig;
import com.baomidou.dynamic.datasource.creator.hikaricp.HikariCpConfig;
import lombok.Data;

import javax.sql.DataSource;

/**
 * TODO
 *
 * @author lujing
 * @since 2024/7/18 8:43
 **/
@Data
public class DataSourceDTO {


    /**
     * 连接池名称(只是一个名称标识)</br> 默认是配置文件上的名称
     */
    private String poolName;
    /**
     * 连接池类型，如果不设置自动查找 Druid > HikariCp
     */
    private Class<? extends DataSource> type;
    /**
     * JDBC driver
     */
    private String driverClassName;
    /**
     * JDBC url 地址
     */
    private String url;
    /**
     * JDBC 用户名
     */
    private String username;
    /**
     * JDBC 密码
     */
    private String password;
    /**
     * jndi数据源名称(设置即表示启用)
     */
    private String jndiName;
    /**
     * 是否启用seata
     */
    private Boolean seata = true;
    /**
     * 是否启用p6spy
     */
    private Boolean p6spy = true;
    /**
     * lazy init datasource
     */
    private Boolean lazy;
    /**
     * 初始化
     */
    private DatasourceInitProperties init = new DatasourceInitProperties();
    /**
     * Druid参数配置
     */
    private DruidConfig druid = new DruidConfig();
    /**
     * HikariCp参数配置
     */
    private HikariCpConfig hikari = new HikariCpConfig();
    /**
     * BeeCp参数配置
     */
    private BeeCpConfig beecp = new BeeCpConfig();
    /**
     * DBCP2参数配置
     */
    private Dbcp2Config dbcp2 = new Dbcp2Config();
    /**
     * atomikos参数配置
     */
    private AtomikosConfig atomikos = new AtomikosConfig();

    /**
     * 解密公匙(如果未设置默认使用全局的)
     */
    private String publicKey;

}
